// 进行二次封装
import axios from "axios";
import { ElMessage } from "element-plus";
import  local  from "@/utils/local";

// 第一步：创建一个axios实例，包括配置信息 地址 超时时间
let request = axios.create({
  baseURL: import.meta.env.VITE_APP_SERVE+import.meta.env.VITE_APP_BASE_API, //设置请求的根路径
  timeout: 5000,
});

// 第二步：请求响应拦截器，在请求发送出去之前，可以进行一些操作
request.interceptors.request.use((config) => {
  // config 配置对象，里面有一个很重要的属性，headers请求头
  config.headers.token = local.getItem("token")||"";
  // 拦截器中的操作，一定要返回config
  return config;
});

// 第三步：响应拦截器
request.interceptors.response.use((response) => {
    // 响应成功的回调
    return response.data;
  },
  (error) => {
    // 响应失败的回调 处理http状态码不是200的情况
    //定义变量存储网络错误信息
    let message="";
    // http状态码
    const status = error.response.status; 
    if (error && error.response) {
      switch (status) {
        case 400:
          message = "请求错误";
          break;
        case 401:
          message = "未授权，请登录";
          break;
        case 403:
          message = "拒绝访问";
          break;
        case 404:
          message = `请求地址出错: ${error.response.config.url}`;
          break;
        case 500:
          message = "服务器内部错误";
          break;
      }
    }

    ElMessage({
      message,
      type: "error",
    });
    return Promise.reject(error);
  });

  export default request;
